#include <iostream>
#include <string>
#include <unordered_map>
#include <gtest/gtest.h>

class Myevironment : public testing::Environment
{
public:
    virtual void SetUp() override
    {
        std::cout << "单元测试执行前的环境初始化" << std::endl;
    }
    virtual void TearDown() override
    {
        std::cout << "单元测试执行完毕后的环境清理" << std::endl;
    }
};

TEST(Myevironment,test1)
{
    std::cout<<"单元测试1"<<std::endl;
}

TEST(Myevironment,test2)
{
    std::cout<<"单元测试2"<<std::endl;
}

std::unordered_map<std::string,std::string> mymap;
class MyMapTest : public testing::Environment
{
public:
    virtual void SetUp() override
    {
        std::cout << "单元测试执行前的环境初始化" << std::endl;
        mymap.insert(std::make_pair("nihao","你好"));
        mymap.insert(std::make_pair("再见","zaijian"));
    }
    virtual void TearDown() override
    {
        std::cout << "单元测试执行完毕后的环境清理" << std::endl;
        mymap.clear();
    }
};

TEST(MyMapTest,test1)
{
    ASSERT_EQ(mymap.size(),2);
    mymap.erase("nihao");
}

TEST(MyMapTest,test2)
{
    ASSERT_EQ(mymap.size(),2);
}

int main(int argc,char* argv[])
{
    testing::InitGoogleTest(&argc,argv);
    testing::AddGlobalTestEnvironment(new Myevironment);
    testing::AddGlobalTestEnvironment(new MyMapTest);
    return RUN_ALL_TESTS();
}